﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Legacy_Calculator__Form_Based_.Forms
{
    public partial class FinalForm : Form
    {
        public FinalForm()
        {
            InitializeComponent();
        }

        private void FinalForm_Load(object sender, EventArgs e)
        {
            // Algoritma Perhitungan (o.O)

            Referensi.Ashobah(LakiLakiPenerimaWarisan.ANAK_LAKI_LAKI);

            if (Referensi.ApakahAda(LakiLakiPenerimaWarisan.SUAMI))
            {
                Referensi.Ashobah(PerempuanPenerimaWarisan.ANAK_PEREMPUAN);

                if (Referensi.ApakahAda(LakiLakiPenerimaWarisan.ANAK_LAKI_LAKI) ||
                    Referensi.ApakahAda(PerempuanPenerimaWarisan.ANAK_PEREMPUAN))
                {
                    Referensi.Dapat(LakiLakiPenerimaWarisan.SUAMI, 0.25);
                }
                else
                {
                    Referensi.Dapat(LakiLakiPenerimaWarisan.SUAMI, 0.5);
                }
            }
            else if (Referensi.ApakahAda(PerempuanPenerimaWarisan.ISTRI))
            {
                if (Referensi.ApakahAda(LakiLakiPenerimaWarisan.ANAK_LAKI_LAKI) ||
                    Referensi.ApakahAda(PerempuanPenerimaWarisan.ANAK_PEREMPUAN))
                {
                    Referensi.Dapat(PerempuanPenerimaWarisan.ISTRI, 0.125);
                }
                else
                {
                    Referensi.Dapat(PerempuanPenerimaWarisan.ISTRI, 0.25);
                }
            }

            if (Referensi.ApakahAda(LakiLakiPenerimaWarisan.BAPAK))
            {
                Referensi.Dapat(LakiLakiPenerimaWarisan.BAPAK, 1.0 / 6.0);

                if (!Referensi.ApakahAda(LakiLakiPenerimaWarisan.ANAK_LAKI_LAKI) &&
                    !Referensi.ApakahAda(PerempuanPenerimaWarisan.ANAK_PEREMPUAN))
                {
                    Referensi.Ashobah(LakiLakiPenerimaWarisan.BAPAK);
                }
            }
            else
            {
                if (Referensi.ApakahAda(LakiLakiPenerimaWarisan.KAKEK_DARI_AYAH))
                {
                    Referensi.Dapat(LakiLakiPenerimaWarisan.KAKEK_DARI_AYAH, 1.0 / 6.0);

                    if (!Referensi.ApakahAda(LakiLakiPenerimaWarisan.ANAK_LAKI_LAKI) &&
                        !Referensi.ApakahAda(PerempuanPenerimaWarisan.ANAK_PEREMPUAN))
                    {
                        Referensi.Ashobah(LakiLakiPenerimaWarisan.KAKEK_DARI_AYAH);
                    }        
                }
                else
                {
                    if (Referensi.ApakahAda(LakiLakiPenerimaWarisan.SAUDARA_LAKI_LAKI_SEIBU) ||
                        Referensi.ApakahAda(PerempuanPenerimaWarisan.SAUDARA_PEREMPUAN_SEIBU))
                    {
                        if (Referensi.ApakahAda(LakiLakiPenerimaWarisan.SAUDARA_LAKI_LAKI_SEIBU))
                            Referensi.Ashobah(LakiLakiPenerimaWarisan.SAUDARA_LAKI_LAKI_SEIBU);

                        if (Referensi.ApakahAda(PerempuanPenerimaWarisan.SAUDARA_PEREMPUAN_SEIBU))
                            Referensi.Ashobah(PerempuanPenerimaWarisan.SAUDARA_PEREMPUAN_SEIBU);
                    }

                    if (Referensi.ApakahAda(LakiLakiPenerimaWarisan.SAUDARA_LAKI_LAKI_KANDUNG) ||
                        Referensi.ApakahAda(PerempuanPenerimaWarisan.SAUDARA_PEREMPUAN_KANDUNG))
                    {
                        if (Referensi.ApakahAda(LakiLakiPenerimaWarisan.SAUDARA_LAKI_LAKI_KANDUNG))
                            Referensi.Ashobah(LakiLakiPenerimaWarisan.SAUDARA_LAKI_LAKI_KANDUNG);

                        if (Referensi.ApakahAda(PerempuanPenerimaWarisan.SAUDARA_PEREMPUAN_KANDUNG))
                            Referensi.Ashobah(PerempuanPenerimaWarisan.SAUDARA_PEREMPUAN_KANDUNG);
                    }
                    else
                    {
                        if (Referensi.ApakahAda(LakiLakiPenerimaWarisan.SAUDARA_LAKI_LAKI_SEAYAH) ||
                            Referensi.ApakahAda(PerempuanPenerimaWarisan.SAUDARA_PEREMPUAN_SEAYAH))
                        {
                            if (Referensi.ApakahAda(LakiLakiPenerimaWarisan.SAUDARA_LAKI_LAKI_SEAYAH))
                                Referensi.Ashobah(LakiLakiPenerimaWarisan.SAUDARA_LAKI_LAKI_SEAYAH);

                            if (Referensi.ApakahAda(PerempuanPenerimaWarisan.SAUDARA_PEREMPUAN_SEAYAH))
                                Referensi.Ashobah(PerempuanPenerimaWarisan.SAUDARA_PEREMPUAN_SEAYAH);
                        }
                        else
                        {
                            if (Referensi.ApakahAda(LakiLakiPenerimaWarisan.PAMAN_SEKANDUNG))
                            {
                                Referensi.Ashobah(LakiLakiPenerimaWarisan.PAMAN_SEKANDUNG);
                            }
                            else
                            {
                                if (Referensi.ApakahAda(LakiLakiPenerimaWarisan.SEPUPU_LAKI_DARI_PAMAN_KANDUNG))
                                {
                                    Referensi.Ashobah(LakiLakiPenerimaWarisan.SEPUPU_LAKI_DARI_PAMAN_KANDUNG);
                                }
                            }

                            if (Referensi.ApakahAda(LakiLakiPenerimaWarisan.PAMAN_TIRI))
                            {
                                Referensi.Ashobah(LakiLakiPenerimaWarisan.PAMAN_TIRI);
                            }
                            else
                            {
                                if (Referensi.ApakahAda(LakiLakiPenerimaWarisan.SEPUPU_LAKI_DARI_PAMAN_TIRI))
                                {
                                    Referensi.Ashobah(LakiLakiPenerimaWarisan.SEPUPU_LAKI_DARI_PAMAN_TIRI);
                                }
                            }

                            if (Referensi.ApakahAda(LakiLakiPenerimaWarisan.KEPONAKAN_LAKI_LAKI_DARI_SAUDARA_KANDUNG_LAKI_LAKI))
                            {
                                Referensi.Ashobah(LakiLakiPenerimaWarisan.KEPONAKAN_LAKI_LAKI_DARI_SAUDARA_KANDUNG_LAKI_LAKI);
                            }

                            if (Referensi.ApakahAda(LakiLakiPenerimaWarisan.KEPONAKAN_LAKI_LAKI_DARI_SAUDARA_TIRI_LAKI_LAKI))
                            {
                                Referensi.Ashobah(LakiLakiPenerimaWarisan.KEPONAKAN_LAKI_LAKI_DARI_SAUDARA_TIRI_LAKI_LAKI);
                            }
                        }
                    }
                }
            }

            if (Referensi.ApakahAda(PerempuanPenerimaWarisan.IBU))
            {
                if (Referensi.ApakahAda(LakiLakiPenerimaWarisan.ANAK_LAKI_LAKI) ||
                    Referensi.ApakahAda(PerempuanPenerimaWarisan.ANAK_PEREMPUAN))
                {
                    Referensi.Dapat(PerempuanPenerimaWarisan.IBU, 1.0 / 6.0);
                }
                else
                {
                    Referensi.Dapat(PerempuanPenerimaWarisan.IBU, 1.0 / 3.0);
                }
            }
            else {
                if (Referensi.ApakahAda(PerempuanPenerimaWarisan.NENEK_DARI_IBU))
                {
                    Referensi.Dapat(PerempuanPenerimaWarisan.NENEK_DARI_IBU, 1.0 / 6.0);
                }

                if (Referensi.ApakahAda(PerempuanPenerimaWarisan.NENEK_DARI_AYAH))
                {
                    if (Referensi.ApakahAda(PerempuanPenerimaWarisan.NENEK_DARI_IBU))
                    {
                        Referensi.Dapat(PerempuanPenerimaWarisan.NENEK_DARI_AYAH, 1.0 / 12.0);
                        Referensi.Dapat(PerempuanPenerimaWarisan.NENEK_DARI_IBU, 1.0 / 12.0);
                    }
                    else
                    {
                        Referensi.Dapat(PerempuanPenerimaWarisan.NENEK_DARI_AYAH, 1.0 / 6.0);
                    }                    
                }
            }

            if (Referensi.ApakahAda(LakiLakiPenerimaWarisan.ANAK_LAKI_LAKI))
            {
                Referensi.Ashobah(PerempuanPenerimaWarisan.ANAK_PEREMPUAN);
            }
            else
            {
                if (Referensi.ApakahAda(PerempuanPenerimaWarisan.ANAK_PEREMPUAN))
                {
                    if (Referensi.Jumlah(PerempuanPenerimaWarisan.ANAK_PEREMPUAN) > 1)
                    {
                        Referensi.Dapat(PerempuanPenerimaWarisan.ANAK_PEREMPUAN, 2.0 / 3.0);
                    }
                    else
                    {
                        Referensi.Dapat(PerempuanPenerimaWarisan.ANAK_PEREMPUAN, 1.0 / 2.0);

                        Referensi.Ashobah(PerempuanPenerimaWarisan.CUCU_PEREMPUAN_DARI_ANAK_LAKI_LAKI_KANDUNG);
                    }
                }
                else
                {
                    if (Referensi.ApakahAda(PerempuanPenerimaWarisan.CUCU_PEREMPUAN_DARI_ANAK_LAKI_LAKI_KANDUNG)) {
                        if (Referensi.Jumlah(PerempuanPenerimaWarisan.CUCU_PEREMPUAN_DARI_ANAK_LAKI_LAKI_KANDUNG) > 1) {
                            Referensi.Dapat(PerempuanPenerimaWarisan.CUCU_PEREMPUAN_DARI_ANAK_LAKI_LAKI_KANDUNG, 2.0 / 3.0);
                        }
                        else {
                            Referensi.Dapat(PerempuanPenerimaWarisan.CUCU_PEREMPUAN_DARI_ANAK_LAKI_LAKI_KANDUNG, 1.0 / 2.0);
                        }
                    }
                }

                if (Referensi.ApakahAda(LakiLakiPenerimaWarisan.CUCU_LAKI_LAKI_DARI_ANAK_LAKI_LAKI_KANDUNG))
                {
                    Referensi.Ashobah(LakiLakiPenerimaWarisan.CUCU_LAKI_LAKI_DARI_ANAK_LAKI_LAKI_KANDUNG);
                }
            }

            // Proses perhitungan

            var joinedItem = Referensi.arrayLakilakiPenerima.ToList();
            joinedItem.AddRange(Referensi.arrayPerempuanPenerima.ToList());

            foreach (var penerima in joinedItem)
            {
                if (penerima.ada)
                {
                    lists.Items.Add(new ListViewItem(new[] { penerima.nama, penerima.jumlah.ToString(), "0" }));
                }
            }
        }
    }
}
